package br.edu.unifei.mestrado.greedy;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MainGreedKWayMemory {
	
	private static Logger logger = LoggerFactory.getLogger(MainGreedKWayMemory.class);

	public static void main(String[] args) {
		
		String file = null;
		Integer sets = null;
		List<Integer> rawSeeds = new ArrayList<Integer>();

		// executar assim: main fileName.txt 2 0 1
		// ou: main fileName.txt
		// ou sem nada, daí entra tudo via teclado
		if (args.length > 0) {
			file = args[0];
			if (args.length > 1) {
				try {
					sets = Integer.parseInt(args[1]);
				} catch (NumberFormatException e) {
					logger.warn("Valor de K inválido.");
				}
				if( args.length < sets + 2) {
					throw new RuntimeException("Os valores de seed são obrigatórios quando se usa o k.");
				}
				for (int i = 2; i < args.length; i++) {
					try {
						rawSeeds.add(Integer.parseInt(args[i]));
					} catch (NumberFormatException e) {
						logger.warn("Valor de K inválido.");
						break;
					}
				}
			}
		}

		logger.warn("Iniciando Greedy K-Way em memória... file: " + file);

		GreedyKWayMemory gkw = new GreedyKWayMemory(file);
		gkw.execute(sets, rawSeeds);
	}
}
